<!-- hi IE,please go to Quirks Mode-->
<!DOCTYPE html PUBLIC "-//W3C//Dtd XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/Dtd/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>phpwind开发文档</title>
<link rel="stylesheet" type="text/css" href="../images/pages.css" />
</head>
<body>
        	<h1 class="h1A">插件安装</h1>
<div class="content cc">
<p>下述的步骤只是按照通用流程进行说明，如果与插件安装说明中的描述不符，请以插件提供者的描述为准。
<ul>
<h2>插件使用</h2>
<li><strong><b>1、</b>下载所需的插件</strong><br/>
  phpwind百款插件，集大家所爱，请下载适合您当前论坛情况的插件，并仔细阅读插件安装说明</li>
<li>按插件安装说明修改程序、模板、上传插件
<br />插件上传非常简单，将插件目录上传到论坛根目录下的hack文件夹下即可。
<li><strong><b>2、</b>安装插件
</strong><br />
上传完毕后，进入论 坛【后台】->【应用】->【插件中心】,在"未安装插件"栏目下找到该插件，选择安装。
<li><strong><b>3、</b>插件管理
</strong><br />
进入系统【后台】->【应用】->【插件中心】，在"已安装插件"栏目下找到该插件，开启插件、设置插件参数，开始使用该插件。
</ul>
<br/>
<h2>插件目录结构，以及文件名约定规则</h2>
<p>举例插件名称为打工插件，唯一ID为work，那么插件的文件夹名称应该跟唯一ID保持一致，其所有文件应该存放在 hack/work目录下，以下内容将以此插件为例说明。</p>
<p><b>1、插件根目录 hack/work目录</b> </p>
存放插件主要文件，包括在根目录下的文件内容如下：
<ul>
<li>--index.php 插件前台主文件，如果不存在此文件，插件则不显示前台界面。</li>
<li>--admin.php 插件后台主文件，如果不存在此文件，插件则无后台管理功能。</li>
<li>--sql.txt 插件安装所需要执行的SQL语句，禁止Drop phpwind自身数据以及删除已有数据等危险操作。如果不需要执行SQL语句变动数据库，可以不存在此文件。</li>
<li>--readme.txt 插件使用说明，来提供给用户相关说明文档。</li>
<li>倘若无前台显示/后台设置等，可以没有相应的文件，如果有相应功能，则文件命名必须按照指定规则。
</li>
</ul>
<p><b>2、图片目录 hack/work/image</b> </p>
此目录存放插件文件中所使用到的图片文件，强烈要求在文件中使用$hkimg变量来指定此目录，这样指定目录将会让文件有极大的灵活性。<br />
<p><b>3、插件包含文件 hack/work/require</b></p>
倘若插件比较大，可以把一些常用的函数写成文件放入到require文件夹。<br />
<p><b>4、插件模板文件夹 hack/work/template</b></p>
不同于5.0之前的版本，所有模板均放置到template下，前台放置于template/wind 后台放置于template/admin，而现有的插件体系规定所有的插件模板均放置在这一个目录下，不再需要分别放到两个文件夹中。 <br />
<p><b>5、缓存文件</b></p>
出于文件777属性考虑，以及缓存文件的统一部署，建议插件开发者将缓存文件存储为data/bbscache 
目录下（此目录已经可写，否则无法使用）， 
同时，出于进一步的为插件使用者着想，建议缓存文件使用程序生成，来避免第一次使用插件时，因为没有缓存文件或者缓存文件不可写而导致的错误--我们必须 
考虑到，部分用户不熟悉电脑操作，并不了解如何设置文件777属性，所以建议并不附带默认的缓存文件，而默认的缓存文件，在插件使用者第一次使用的时候， 
自动生成到data/bbscache目录下，这样将避免插件安装中频繁出现的777问题。 备注提示：一般附带缓存的文件，可内置某些默认值，然后插件 
完成安装之后，使用者应该进行一次设置提交来保存它所需要的设置，在这个时候设置再生成缓存文件到data/bbscache目录下一个缓存文件，能够有 
效的避免需要设置777的问题] <br /> 
<br />
<h2>phpwind插件开发代码安全基础及简单检测</h2>
<p><b>1、数据过滤</b></p>
$_GET、$_POST的变量通过InitGP() or GetGP() 来获取。确认为数值为变量要(int)　or　(float)强制转换，如：$tid = (int)GetGP('tid'); 。字符串变量要经过Char_cv()过滤，如：$subject = Char_cv($GetGP('subject'));。在PW７中，InitGP() 默认开启Char_cv()过滤，因此不能版本间的兼容问题得处理好，避免有效内容出错。
<br />
$_SERVER变量，在phpwind7中通过全局变量$pwServer或GetServer()　来读取，而在其他版本中，对单独用到的，必须经过addslashes() or　Char_cv().
<p><b>2、SQL注入</b></p>
SQL语句中的变量，在phpwind7中，保证最后经过过滤函数pwEscape()　pwImplode()、pwSqlSingle()、wSqlMulti()　。如：$tbid = $db->get_value('SELECT ptable FROM pw_threads WHERE tid='.pwEscape($tid,false));
<br />
而在其他版本，SQL语句中的变量两边必需加个单引号，同时，变量必需是经过了转义的。特别注意从数据库中读取出来的值再次写入数据库时，得进行转义，避免二次注入。
<br />
<p><b>3、跨站脚本</b></p>
输出到模板HTML的字符串变量，保证都是经过Char_cv().
<br />
杜绝直接在HTML模板中写类似$_GET、$_POST、$_SERVER等变量

<p><b>4、文件包含</b></P>
include() or require()　文件路径包含变量时，必需经过Pcv()的过滤，如include_once Pcv(D_P.'data/bbscache/'.$filename);

</div>


      </body>
</html>